1. Field of the Invention
The present invention relates to storage area networks fabric virtualization using an adjunct processor. More particularly, the present invention relates to virtualization of multi-fabric storage area networks (SANs) using an adjunct processor. Still more particularly, the present invention relates to an adjunct processor that manages a multi-fabric SAN as a single fabric network.
2. Description of the Background Art
The importance of storage area networks (SANs) in today's networking environment is well known. Typically, a SAN is a back-end network coupling multiple storage devices together using channels such as Fibre Channel, SCSI, iSCSI (SCSI over IP), or Infiniband. SANs provide service providers a large amount of storage capacity that may be efficiently retrieved by a host or application server. Additionally, and perhaps more importantly, SANs have allowed service providers and the information technology industry to grow their storage and server needs independently of each other. Specifically, SANs allow storage capacity to be increased without having to purchase additional servers.
The ability to store large amounts of data and quickly retrieve data from SANs has become even more relevant as the use of application servers in the enterprise has increased. The application servers perform operations on very large amounts of data, with only small data sets being provided to a client terminal on a network. For example, the Internet Data Center, supporting E-commerce applications requires a very large amount of data to be processed by the application servers, but only small pages are sent to the client browser. In order to accommodate the storage of these large files, SANs typically comprise multiple storage devices that operate together as a group. For example, a redundant array of independent disks allows multiple storage disks to store and retrieve data in parallel by using a striping method. These storage clusters generally provide a high level of fault tolerance and redundancy.
SANs may be implemented in either a centralized or decentralized configuration. A centralized configuration directly couples multiple hosts to a single switching element (or director) connected to the storage cluster. As described above, this storage cluster comprises multiple storage devices. This centralized configuration requires a switching element that has a high port density, requires no single point of failure, and the result is a high cost switching element.
A decentralized or network model SAN configuration couples multiple hosts to multiple interconnected switches and/or fabrics to multiple storage clusters. Typically, a switching fabric is used to route data from a particular storage cluster to a particular host. This configuration allows a service provider to distribute storage devices within a SAN. Additionally, this decentralized configuration provides an additional level of scalability to a corresponding SAN. The switching fabric provides a variety of paths between a storage device and a host. These multiple paths provide an additional level of redundancy to the SAN. The decentralized SAN also provides a mechanism to provide even higher number of ports (across multiple switches) at a lower cost.
As the storage clusters are added to a SAN, each cluster can either be plugged into an existing fabric or a new fabric can be created depending on the specific application of the new storage. As a result, a large number of decentralized SANs contain multiple switching fabrics. The use of multiple switching fabrics within a SAN offers a variety of advantages over SANs having a single switching fabric. For example, an additional level of redundancy is added to the network by allowing data to routed around a failed switch. This additional level of redundancy provides for high availability operation (i.e. no single failure will completely block the hosts from communicating with each other or with a particular storage cluster).
A decentralized SAN may comprise a single fabric or multiple redundant fabrics. In either configuration, redundant paths exist between a server and a particular storage device. If multiple redundant fabrics exist, then the SAN is provided a layer of protection against overall failure in the case where a single fabric (or element within the fabric) goes down. Generally, each of these switching fabrics is separated from other switching fabrics within a decentralized SAN. The separation provides the isolation required for high availability operation within the SAN that is described above. However, the isolation of switching fabrics within a SAN creates a network management problem.
Each SAN switching fabric must operate its fabric services independently while simultaneously attempting to function within a single switching entity. In other words, the hosts connected to each fabric have to duplicate their management operations to each of these fabrics. As a result, the lack of cooperation between each switching fabric leads to a cumbersome operating model as well as uses unnecessary bandwidth due to these duplicative management operations. For example, management data from a host relating to security must be relayed to each attached switching fabric in order to protect the switch. This duplicative operation requires both bandwidth and processing time to complete.
Independent switching fabrics may also limit a switch's ability to balance various loads across multiple switching fabrics. In order to optimize the transfer of data across the switch, each switching fabric must communicate with each other in order to determine an optimal path from a storage device to a requesting host. For example, multiple switching fabrics connected to a desired storage cluster may receive a request from a host. The load placed on the switching fabrics may only be internally balanced within each switching fabric or may be inefficiently balanced across multiple fabrics. As a result, retrieved data from a storage device may travel along a non-optimal path to a server.
Independent switching fabrics may also limit the ability to develop fabric services that span multiple logically related switching fabrics. In order to support a storage allocation services spanning a common set of storage clusters connected to a common set of switching fabrics you would need to be able to communicate/view a common set of storage cluster resources and associated bookkeeping.
Therefore, there is a need for a system and method for managing multiple switching fabrics as a single network while still maintaining a physical isolation between each switching fabric during operation.